package exception;

/**
 * java异常处理机制：try...catch
 * try{
 *     代码片段
 * }catch(XxxException e){
 *     当try的代码片段出现XxxException时的补救措施
 * }
 */
public class TryCatchDemo {
    public static void main(String[] args) {
        System.out.println("程序开始");

    try{
        /*try块中某句代码中如果出现了异常，那么出错代码以下的代码都不执行了
        try语句中如果不出异常，则不执行catch语句*/

        //String line = null;
        //System.out.println(line.length());//由JVM new了个空指针异常
        //String line = "";
        //System.out.println(line.charAt(0));
        String line = "avcs";
        System.out.println(Integer.parseInt(line));
    }
    /*catch (NullPointerException e){//针对try中出现空指针异常的解决方法
        System.out.println("出现空指针异常，请解决");
    }
     catch (StringIndexOutOfBoundsException e){//针对try中出现字符串下标越界异常的解决方法
        System.out.println("出现了字符串下标越界异常，请解决" );
    }
     */
    catch (NullPointerException |StringIndexOutOfBoundsException e ){
        //若多个异常有相同处理方式时，可以合并到一个catch中进行处理
        System.out.println("出错了");
    }
    catch (Exception e){//可以在最后捕获超类异常，凡是该异常的子类都可以被捕获并处理
        System.out.println("出现异常");
    }
        System.out.println("程序结束");
    }
}
